package com.anttribe.components.infra.lang.reflect.scanner;

import java.util.Set;
import java.util.function.Predicate;

/**
 * “类扫描器”
 *
 * @author zhaoyong
 * @date 2021/11/4 0004
 */
public interface ClassScanner {

    /**
     * 类后缀
     */
    String CLASS_SUFFIX = ".class";

    /**
     * 包名分隔符
     */
    String PACKAGE_SEPARATOR = ".";

    /**
     * 文件分隔符
     */
    String FILE_SEPARATOR = "/";

    /**
     * 扫描指定包，获取类
     *
     * @param basePackage 基础包名
     * @param predicate   筛选类
     * @return Set<Class < ?>>
     */
    Set<Class<?>> scan(String basePackage, Predicate<Class<?>> predicate);

}
